var Home = {
    departCode : $("#departCode").val(),
    departDesc : $("#departDesc").val()==null||$("#departDesc").val()==""?"全院":$("#departDesc").val(),
    tableIndex: $("#departCode").val()==null||$("#departCode").val()==""?"科室":"主治医师" ,//表格第一列描述
    analysisDicChart: null
};
$(function () {
    //科室
    $('#depart').combobox({
        data:$.parseJSON($("#departMap").val()),
        valueField:'value',
        textField:'text'
        //onSelect:ManageIndex.departChange
    });
    //院区
    $('#office').combobox({
        data:$.parseJSON($("#officeMap").val()),
        valueField:'value',
        textField:'text',
        onSelect:Home.officeChange,
        onLoadSuccess: function () { //加载完成后,val[0]写死设置选中第一项
            var hospId = $('#hospitalId').val();
            if (hospId != "") {
                $(this).combobox("setValue", hospId);
                $(this).combobox('disable');
            } else {
                var val = $(this).combobox("getData");
                if (val.length == 2) {//如果就一个院区 加上全部=2
                    $(this).combobox("setValue", val[1].value);
                    Home.officeChange(val[1]);
                    $("#oneOffice").val("yes");
                } else {
                    $(this).combobox("setValue", "");
                    $("#oneOffice").val("no");
                }
            }
        }
    });
    $('#startDate').datebox('setValue',timeStamp2String(new Date().getTime()-(1000 * 60 * 60 * 24*180)));
    $('#endDate').datebox('setValue',Home.getSystemTime());
    

    //Home.initTopMiddle();//加载主页顶部和中部的数据
    Home.initBottomTable();//加载主页低部表格数据
    //主页最上面文字描述
    $("#homeHtmlDesc").panel({title:"单病种专员填报统计"});
    //表格上面文字描述
    var desc = "全部";
    $("#homeTableDesc").panel({title:desc +"绩效报表数据"});
    //绑定顶部和中部蓝色数字的点击事件
    $(".homeCaseDeatil").click(function(){
        var _this = $(this);
        var key = _this.attr("id");
        /*var desc = _this.parent().prev().html();//父级的上一个同级元素*/
        var im_content=document.getElementById(key).parentNode;;
        var descText = im_content.innerText;
        var desc = descText.split("：")[0];
        Home.homeKeyDetail(key,desc,1);
    });
    $(".homeCaseDeatil2").click(function(){
        var _this = $(this);
        var key = _this.attr("id");
        var desc = _this.parent().prev().html();//父级的上一个同级元素
        Home.homeKeyDetail(key,desc,2);
    });

    //查询当天执行定时任务时，表空间使用情况 oracle数据库才使用
    //Home.tableSpaceWarn();
});

/**
 * //根据父级机构 查询子机构
 */
Home.officeChange = function(that){
    var ajax = new $ax(Sys.backendPath + "/sds/common/deptListByHospId", function(data){
        $('#depart').combobox({
            data:data,
            valueField:'value',
            textField:'text',
            onLoadSuccess: function () { //加载完成后,val[0]写死设置选中第一项
                $(this).combobox("setValue", "");
            }
        });
    },function(data){
        layer.msg("查询失败!" + data.responseJSON.message + "!",{icon: 2});
    });
    ajax.set({"hospID":that.value,"id":"depart"});
    ajax.start();
}

Home.search = function(){
    Home.initBottomTable();
};

/**
 * 加载主页底部表格数据
 */
Home.initBottomTable = function(){
    Home.entityChange();
};

/**
 * 根据病种绘制动态表头
 */
Home.entityChange = function(){
    var entityId = "";
    var entityDesc = "";
    $('#departmentTable').bootstrapTable("destroy");//先销毁原来的表格
    buildTable(entityId,entityDesc);
}

/**
 * 画中部图形
 */
Home.drawMiddleChart = function(chartDatas){
    echarts.init($("#analysisChart")[0]).dispose();
    var lines = [];
    var chartDic = Home.analysisDicChart;
    $.each(chartDic,function(index,dic){
        if (dic.field.indexOf("Fee") == -1 && dic.field.indexOf("Day") == -1){
            lines.push({desc:dic.title,data:[],code:dic.field});
        }
    });
    var chartParams = {
        backgroundColor : '#f2f2f2',//背景颜色
        isHorizontal : false,
        yAxisName : '单位:%',//y轴单位
        formatterFunc : function(params){
            var backStr = "";
            var relVal = params[0].name;
            backStr += relVal + "<br>";
            for (var i = 0;i < params.length; i++) {
                backStr += params[i].marker+params[i].seriesName + "：" +params[i].value+ "%<br>";
            }
            return backStr;
        },
        titleShow:false,
        isDataZoom:false,//是否显示缩放
        legendShow : true,
        legendPosition : 'top',
        gridLeft:"20px",
        gridRight:"10px",
        gridTop:"30px",
        gridBottom:"25px",
        rotate:60,//x轴数据偏移角度
        showLabel : true,
        legend:{
            show : false
        }
    };
    lineChartVte($("#analysisChart"), lines, chartDatas,null,null,chartParams);
};

Home.drawMiddleChart2 = function(data) {
    echarts.init($("#admDaysChart")[0]).dispose();
    var lines = [
        {desc:'次均住院日',data:[],code:'hosDays'}
    ];
    var chartParams = {
        //backgroundColor : '#f2f2f2',
        isHorizontal : false,
        legendShow : false,
        showLabel : true,
        yAxisName : '天',//y轴单位
        legend:{
            show : false
        },
        isDataZoom:false,//是否显示缩放
        titleLeft:'center',//标题位置
        xAxisInterval:0,//坐标轴刻度标签的显示间隔，在类目轴中有效。默认会采用标签不重叠的策略间隔显示标签。可以设置成 0 强制显示所有标签
        rotate:50,//x轴数据偏移角度
        grid:{
            containLabel: true, //注意加上，否则axisLabel有可能显示会不全
            top:"35px",
            left:"20px",
            right:"20px",
            bottom:"5px"
        },
        label:{
            show:true,
            position:'top'
        }
    };
    barChartVte($("#admDaysChart"), lines, data, "次均住院日",null,chartParams);
}

Home.drawMiddleChart3 = function(data) {
    echarts.init($("#entityFeeChart")[0]).dispose();
    var lines = [
        {desc:'次均住院费用',data:[],code:'hosCost'}
    ];
    var chartParams = {
        //backgroundColor : '#f2f2f2',
        isHorizontal : false,
        legendShow : false,
        showLabel : true,
        yAxisName : '元',//y轴单位
        legend:{
            show : false
        },
        isDataZoom:false,//是否显示缩放
        titleLeft:'center',//标题位置
        xAxisInterval:0,//坐标轴刻度标签的显示间隔，在类目轴中有效。默认会采用标签不重叠的策略间隔显示标签。可以设置成 0 强制显示所有标签
        rotate:50,//x轴数据偏移角度
        grid:{
            containLabel: true, //注意加上，否则axisLabel有可能显示会不全
            top:"35px",
            left:"20px",
            right:"20px",
            bottom:"5px"
        },
        label:{
            show:true,
            position:'top'
        }
    };
    barChartVte($("#entityFeeChart"), lines, data, "次均住院费用",null,chartParams);
}


/**
 * 科室详细信息
 */
Home.homeDepartDetail = function(desc){
    var startDate = "";
    var endDate = "";
    if ($('#startDate').datebox('getValue') != ""){
        startDate = $('#startDate').datebox('getValue')+" 00:00:00";//开始日期
        endDate = $('#endDate').datebox('getValue')+" 23:59:59";//开始日期
    }
    var office = $("#office").combobox("getValue");
    var depart = $("#depart").combobox("getValue");
    var qcEntity = $("#qcEntity").combobox("getValue");

    var href = Sys.backendPath + "/analysis/sdsloc/toLocCase?desc="+encodeURIComponent(desc) +"&startDate=" + startDate +"&endDate=" + endDate +"&office=" + office +"&depart=" + depart +"&qcEntity=" + qcEntity;
    layer.open({
        type: 2,
        title: ['<i class = "fa fa-list-ol"></i>&nbsp;'+desc,'padding-left:10px'],
        area:["95%","95%"],
        scrollbar: false,//为了禁止父页面滚动条滚动
        skin:'classfyLBStyle layer-ext-hisui',
        content: href //这里content是一个URL，如果你不想让iframe出现滚动条，你还可以content: ['http://sentsin.com', 'no']
    });
};
/**
 * 钻取主页蓝色数字详细信息
 */
Home.homeKeyDetail = function(key,desc,type,entityId){
    var qcYear = $("#qcYear").combobox("getValue");
    var qcMonth = $("#qcMonth").combobox("getValue");
    var office = $("#office").combobox("getValue");
    var depart = $("#depart").combobox("getValue");
    var qcEntity = $("#qcEntity").combobox("getValue");

    if(type==2){
        var href = Sys.backendPath + "/analysis/sdsmsta2/to_case2?key="+key+"&searchType=1&desc="+encodeURIComponent(desc) +"&startDate=" + startDate +"&endDate=" + endDate +"&office=" + office +"&depart=" + depart +"&qcEntity=" + qcEntity;
    }else{
        var href = Sys.backendPath + "/analysis/sdsmsta2/to_case?key="+key+"&searchType=1&desc="+encodeURIComponent(desc) +"&qcYear=" + qcYear +"&qcMonth=" + qcMonth +"&office=" + office +"&depart=" + depart +"&qcEntity=" + qcEntity+"&entityId=" + entityId;
    }

    layer.open({
        type: 2,
        title: ['<i class = "fa fa-list-ol"></i>&nbsp;'+desc,'padding-left:10px'],
        area:["95%","95%"],
        scrollbar: false,//为了禁止父页面滚动条滚动
        skin:'classfyLBStyle layer-ext-hisui',
        content: href //这里content是一个URL，如果你不想让iframe出现滚动条，你还可以content: ['http://sentsin.com', 'no']
    });
    //Sys.addTabPage($.trim(desc), href,true);

}

/**
 * 钻取主页蓝色数字详细信息
 */
Home.homeKeyDetailTable = function(key,desc,entityId){
    //type=1是从顶部蓝色数字传入，type=2表示从下面表格传入，如果是钻取的科室，传area参数暂时定为主治医师Id
    var startDate = "";
    var endDate = "";
    if ($('#startDate').datebox('getValue') != ""){
        startDate = $('#startDate').datebox('getValue')+" 00:00:00";//开始日期
        endDate = $('#endDate').datebox('getValue')+" 23:59:59";//开始日期
    }
    var office = $("#office").combobox("getValue");
    var depart = $("#depart").combobox("getValue");
    var qcEntity = $("#qcEntity").combobox("getValue");

    var href = Sys.backendPath + "/analysis/sdsloc/toLocCase?key="+key+"&searchType=1&desc="+encodeURIComponent(desc) +"&startDate=" + startDate +"&endDate=" + endDate +"&office=" + office +"&depart=" + depart +"&qcEntity=" + qcEntity+"&entityId=" + entityId;
    layer.open({
        type: 2,
        title: ['<i class = "fa fa-list-ol"></i>&nbsp;'+desc,'padding-left:10px'],
        area:["95%","95%"],
        scrollbar: false,//为了禁止父页面滚动条滚动
        skin:'classfyLBStyle layer-ext-hisui',
        content: href //这里content是一个URL，如果你不想让iframe出现滚动条，你还可以content: ['http://sentsin.com', 'no']
    });

}

/**
 * 导出主页的表格数据
 */
Home.exportTable = function() {
    $("#tableDiv table").tableExport(
        {
            type : 'xlsx',
            escape : 'false'
        },Home.getSystemTime()+'全部绩效报表数据'
    )
};
/**
 * 获取当天年月日
 */
Home.getSystemTime = function(){
    function p(s) {
        return s < 10 ? '0' + s: s;
    }
    var date = new Date(); // 获取中国标准时间
    var y = date.getFullYear(); // 年
    var m = date.getMonth()+1; // 月
    var d = date.getDate(); // 日
    var sysTime = y+'-'+p(m)+'-'+p(d);
    return sysTime;
};

//在Jquery里格式化Date日期时间数据
function timeStamp2String(time){
    var datetime = new Date();
    datetime.setTime(time);
    var year = datetime.getFullYear();
    var month = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
    var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
    return year + "-" + month + "-" + date;
}
/**
 * 计算比率
 */
function MathMethod(a,b){
    if(b==0){
        return "0%";
    }
    var num = a/b;
    num = (num.toFixed(4)) * 100;  // 输出结果为 2.45
    var numStr = num.toString()
    var index = numStr.indexOf('.');
    if(index > -1){
        numStr = numStr.substring(0, index+3);
    }
    return numStr+"%";
}

function sumFieldValue(value,field){
    if(field.split("_")[1] == "科室") {
        return "合计";
    }
    if(field.split("_")[1] == "单病种专员"){
       return " ";
    }
    var count = 0;
    for(var i in value){
        count += value[i][field];
    }
    if(count==0){//如果是0返回空
        return "0"
    }

    return count
}

function mergeCells(data,fieldName,colspan,target){
    //声明一个map计算相同属性值在data对象出现的次数和
    var sortMap = {};
    for(var i = 0 ; i < data.length ; i++){
        for(var prop in data[i]){
            if(prop == fieldName){
                var key = data[i][prop]     //fieldName的value
                if(sortMap.hasOwnProperty(key)){
                    sortMap[key] = sortMap[key] * 1 + 1;
                } else {
                    sortMap[key] = 1;
                }
                break;
            }
        }
    }
    /*for(var prop in sortMap){
        console.log(prop,sortMap[prop])
    }*/
    //合并单元格
    var index = 0;
    for(var prop in sortMap){
        var count = sortMap[prop] * 1;
        $(target).bootstrapTable('mergeCells',{index:index, field:fieldName, colspan: colspan, rowspan: count});
        index += count;
    }

}

//设置合计列宽度
function merge_footer(){
    //获取table表中footer 并获取到这一行的所有列
    var footer_tbody = $('.fixed-table-footer table tbody');
    var footer_tr = footer_tbody.find('>tr');
    var footer_td = footer_tr.find('>td');
    var footer_td_1 = footer_td.eq(0);
    for(var i=0;i<footer_td.length;i++){
        footer_td.eq(i).hide();//隐藏单元格
        if(i >= 0 && i <= 1){
            footer_td.eq(i).attr('width', "200px").show();//显示单元格并设置列宽
        }else {
            footer_td.eq(i).attr('width', "200px").show();//显示单元格并设置列宽
        }
    }
}

function objectOrder(obj) {//排序的函数

    var newkey = Object.keys(obj).sort(); //先用Object内置类的keys方法获取要排序对象的属性名，再利用Array原型上的sort方法对获取的属性名进行排序，newkey是一个数组，这行是最重要的代码！

    var newObj = {};//创建一个新的对象，用于存放排好序的键值对

    for (var i = 0; i < newkey.length; i++) {//遍历newkey数组

        newObj[newkey[i]] = obj[newkey[i]];//向新创建的对象中按照排好的顺序依次增加键值对

    }

    return newObj;//返回排好序的新对象

}

function buildTable(entityId,entityDesc){
    var params = {};
    var ajax = new $ax(Sys.backendPath + "/analysis/sdsdoc/selectSdsDocTable", function (data) {
        var dataTable = data.tableData;
        if (dataTable.length != 0) {
            $('#exportTable').show();
            $('#nodataDiv').hide();

            var columns = []
            /*for (let key in dataTable[0]) {
                var property = dataTable[0][key];
                columns.push({
                    "title": property.split("_")[1],
                    "field": property,
                    width: 200,
                    align: 'left',
                    valign: 'middle',
                    switchable: true,
                    sortable: true,
                    footerFormatter:function(value){
                        return sumFieldValue(value, property);
                    }
                });
            }*/
            var obj = objectOrder(dataTable[0]);
            for (var i = 0; i < (Object.keys(obj)).length; i++) {//Object.keys(obj) 获取key名称
                let property = (Object.keys(obj))[i];//id   username
                columns.push({
                    "title": property.split("_")[1],
                    "field": property,
                    width: 200,
                    align: 'left',
                    valign: 'middle',
                    switchable: true,
                    sortable: true,
                    formatter:function(value,row,index){
                        // if (value > 0) {
                        //     return "<span style='color: #cc0000'>" + value + "</span>"
                        // }
                        return value;
                    },
                    footerFormatter:function(value){
                        return sumFieldValue(value, property);
                    }
                });
            }
            this.$table =
                $('#departmentTable').bootstrapTable({
                    data: dataTable,
                    striped: false,//是否显示行间隔色
                    pagination: false,//是否显示分页
                    showFooter: true,
                    //paginationLoop: false,
                    //pageSize : 5,//用于设置每页初始显示的条数
                    //pageList :[4],
                    //sidePagination: 'server',//设置在哪进行分页，默认”client”，可选”server”,返回数据模板不同
                    // fixedColumns: true,
                    // fixedNumber: 2,
                    sortName: "locDesc",
                    sortOrder: 'desc',// desc  asc
                    maintainSelected: true,//设为true 为选中的状态
                    cache: false,
                    search: false, //搜索框
                    columns: columns,
                    onPostHeader: function () {  //当<thead></thead>中的内容被加载完后或者在你所用的DOM中有定义则被触发
                        // $(".th-inner").css("font-weight","700");//表头字体加粗
                        $("#departmentTable > tbody td").each(function (index) {//鼠标悬浮 显示表格数据
                            $(this).attr("title", $(this).text());
                        });
                    },
                    onPostBody: function (tableData) {
                        merge_footer();
                    }
                });
            // 设置表格滚动条固定在页面底部
            setTimeout(() => {
                setScroll();
            }, 500)
        } else {
            $('#exportTable').hide();
            $('#nodataDiv').show();
        }
    }, function (data) {
    });
    params.office = $("#office").combobox("getValue");
    params.depart = $("#depart").combobox("getValue");
    params.startDate = $("#startDate").datebox("getValue") +" 00:00:00";
    params.endDate = $("#endDate").datebox("getValue") +" 23:59:59";
    ajax.set(params);
    ajax.start();
}

function setScroll(){
    const element = document.getElementById('homeTableDesc');
    // 获取元素的位置信息
    const rect = element.getBoundingClientRect();
    
    if ($("#tableDiv").height() < (parseInt($(window).height()) - rect.top - 5)) {
        return;
    }
    
    var height=parseInt($(window).height()) - rect.top - 5 + "px";

    $("#tableDiv").css({
        "height":height,
        'overflow-y': 'scroll',
        'overflow-x': 'scroll',
        'display': 'inline-grid'});
}